TODO list for smartmontools: $Id: TODO,v 1.62 2006/10/27 21:49:42 chrfranke Exp $ SATA devices under Linux ------------------------ These work OK if you use the standard IDe drivers in drivers/ide. The situation is more complicated if you use libata. Prior to Linux kernel version 2.6.15-rc1, libata does not support the HDIO_DRIVE_TASK, HDIO_DRIVE_CMD, and HDIO_DRIVE_TASKFILE ioctl()s that are needed by smartmontools. Support for HDIO_DRIVE_TASK and HDIO_DRIVE_CMD was added into libata by Jeff Garzik starting with Linux kernel version 2.6.15-rc1. Starting with this version, you can use all the smartmontools commands apart from initiating selective self-tests (which also requires HDIO_DRIVE_TASKFILE). A typical command line might look like this: smartctl -a -d ata /dev/sda The '-d ata' is required, since otherwise smartmontools will assume that the device is SCSI, not ATA/SATA. Similar syntax will work with smartd. You may be able to patch earlier versions of libata. Please search the Linux Kernel Mailing list to find this patch, or look at the thread: http://groups.google.de/groups?hl=en&lr=&ie=UTF-8&threadm=2yYBY-4HB-55%40gated-at.bofh.it&rnum=3&prev=/groups%3Fq%3Dsmartmontools%26hl%3Den%26lr%3D%26ie%3DUTF-8%26scoring%3Dd%26selm%3D2yYBY-4HB-55%2540gated-at.bofh.it%26rnum%3D3 To use this, just use (for example) 'smartctl -a -d ata /dev/sda'. Since this looks like this patch will become standard, we need to add something to smartmontools to automatically recognize the libata, and add the '-d ata' automatically. SATA devices ------------ The ATA PASS THROUGH SCSI command (12 and 16 byte cdb) as defined in SAT: http://www.t10.org/ftp/t10/drafts/sat/sat-r07.pdf (section 12.2) provides a general way to pass ATA SMART commands through to SATA devices. Doug Gilbert will in the future add a '-d sat' type (note, this is not a typo, we do not mean '-d sata') which will instruct the generic smartmontools code to assume an ATA device but use those ATA PASS THROUGH commands. This should provide additional support for SATA devices under most or all operating systems. USB devices under Linux ----------------------- Some USB devices can hang smartctl or smartd. This is because these devices fail to comply with SCSI specifications for their packet command sets. Work on improving the detection and bail-out procedures for these flawed devices, so that the user sees an informative error message and smartd/smartctl don't hang. ATA-4 (no kidding!) ------------------- smartctl: add another -t TESTTYPE option to accomodate old-style ATA-4 IBM disks (ATA-4 has no self-test commands). See IBM S25L-2426-02 OEM HARD DISK DRIVE SPECIFICATIONS for DBCA-203240/204860/206480 2.5-Inch Hard Disk Drive with ATA Interface Revision (1.0) http://www.hgst.com/tech/techlib.nsf/techdocs/85256AB8006A31E587256A7D00642A1D/$file/dbca_sp.pdf section 12.30.1.5 for details. These disks offer no self-test option, and the -t offline command only tests a small part of the disk (a 'segment'). We need a -t multioffline that: (1) issues auto offline immediate command (tests ONE segment) (2) waits until estimated completion time (3) tests if off-line data collection status is set to 0x02 (all segments completed) (4) if not, return to (1) ATA-6/7 ------- Support extended error logs Support extended self-test logs smartctl/smartd --------------- Add additional -v options (corresponding to comments in atacmds.c:ataPrintSmartAttribName(). Add interface to Megaraid ATA RAID controllers (Erik) smartctl: --------- Add command line option to issue SMART SAVE ATTRIBUTE VALUES command Feature Register value ATA_SMART_SAVE 0xd3 Perhaps modify the -q option (quiet mode) so that it only warns of ATA errors if they have (say) taken place in the last 168 hours (week). Parse and print additional Attribute flag meanings (IBM ones, eg performance etc). These are now documented in atacmds.h -- we just need to modify the format of the Attribute table. Modify the SMART self-test log table printing so that we ALSO print the value of the self-test failure checkpoint byte, if it's one of the recognized values. See routine SelfTestFailureCodeName and documentation in atacmds.h. smartd: ------- Perhaps change special argument to -m to have also which would actually work with -M exec to run the executable/script in the background rather than in the foreground. But let's wait for someone to request this. At that point we should probably use fork/exec rather than system(). Perhaps change smartd to look in /proc/ide and /proc/scsi to see what exists? If something doesn't exit then don't try to open it? This should probably be the default option if there is no configuration file. Add ability to monitor "worst" value from attributes (sometimes it gets larger!) and to monitor the threshold value (sometimes it changes!). Add command line option that scans devices then WRITES /etc/smartd.conf, perhaps as /etc/smartd.conf.output, just for devices that can be monitored. FreeBSD ------- Add support for 3ware 9000 series SATA controllers. Cygwin and Windows ------------------ Support DEVICESCAN for SPT (IOCTL_SCSI_PASS_THROUGH). Packaging --------- Under freebsd and solaris, the following are wrong: smartd.conf: has linux device paths smart*.in : man pages have (mostly) linux device paths